Various interfaces have been designed to facilitate data exchange between a host system (e.g., computer) and peripheral devices, such as keyboards, scanners, and printers. One common bus-based interface is the Universal Serial Bus (USB), which is a polled bus in which the attached peripherals share bus bandwidth through a host-scheduled, token-based protocol.
A host controller controls transmission of packets on a bus and thereby facilitates data transfer between the host system and connected peripheral devices. A host controller interacts with the host system using a host bus, and interacts with the peripheral (or networked) devices using a bus-based interface protocol including, for example, USB, SCSI, Fibre Channel, eSATA IDE, Ethernet, and FireWire, etc. A USB host controller typically resides in the host system and transmits or directs the receipt or transmission of USB packets to or from connected USB device endpoints. When multiple peripheral devices are connected on the bus, the host controller arbitrates access and allocates available bus bandwidth among the connected devices. Host controllers that quickly and efficiently allocate bus resources between multiple connected devices may increase data throughput performance.